home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / utilities / disk / qformat.lha / QuickFormat.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-08  |  13.9 KB  |  431 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : -- Unnamed --
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23.  
  24. #include "form.h"
  25.  
  26. struct Screen         *Scr = NULL;
  27. UBYTE                 *PubScreenName = NULL;
  28. APTR                   VisualInfo = NULL;
  29. struct Window         *Project0Wnd = NULL;
  30. struct Gadget         *Project0GList = NULL;
  31. struct IntuiMessage    Project0Msg;
  32. struct Gadget         *Project0Gadgets[9];
  33. UWORD                  Project0Left = 120;
  34. UWORD                  Project0Top = 37;
  35. UWORD                  Project0Width = 316;
  36. UWORD                  Project0Height = 136;
  37. UBYTE                 *Project0Wdt = (UBYTE *)"Quick Format v2.3";
  38.  
  39. UBYTE *Gadget700Labels[] = {
  40.     (UBYTE *)"FFS",
  41.     (UBYTE *)"DCFFS",
  42.     (UBYTE *)"INTL",
  43.     (UBYTE *)"OFS",
  44.     NULL };
  45.  
  46. struct TextAttr topaz8 = {
  47.     ( STRPTR )"topaz.font", 8, 0x00, 0x01 };
  48.  
  49. struct IntuiText Project0IText[] = {
  50.     2, 0, JAM1,177, 47, &topaz8, (UBYTE *)"Format Mode:", NULL };
  51.  
  52. UWORD Project0GTypes[] = {
  53.     STRING_KIND,
  54.     CHECKBOX_KIND,
  55.     CHECKBOX_KIND,
  56.     CHECKBOX_KIND,
  57.     BUTTON_KIND,
  58.     BUTTON_KIND,
  59.     STRING_KIND,
  60.     CYCLE_KIND,
  61.     CHECKBOX_KIND
  62. };
  63.  
  64.  
  65. UBYTE status[9]={1,0,0,0,0,0,0,0,0};
  66. char drive[10]="df0:",name[20]="Empty",trashcan[30],quick[30],ffs[10],dcffs[10],ofs[10],intl[10];
  67. char stringa[250],nome[30]=" name ",format[50]="Format drive ";
  68. void form(void);
  69. char *cycle[4]={ " FFS "," DIRCACHE "," INTL "," OFS " };
  70. int count=0;
  71.  
  72. struct NewGadget Project0NGad[] = {
  73.     76, 21, 176, 13, (UBYTE *)"_Name ", NULL, GD_Gadget00, PLACETEXT_LEFT|NG_HIGHLABEL, NULL, (APTR)Gadget00Clicked,
  74.     96, 45, 26, 11, (UBYTE *)"_Trashcan ", NULL, GD_Gadget10, PLACETEXT_LEFT|NG_HIGHLABEL, NULL, (APTR)Gadget10Clicked,
  75.     96, 59, 26, 11, (UBYTE *)"_Verify   ", NULL, GD_Gadget20, PLACETEXT_LEFT|NG_HIGHLABEL, NULL, (APTR)Gadget20Clicked,
  76.     96, 73, 26, 11, (UBYTE *)"_Quick    ", NULL, GD_Gadget30, PLACETEXT_LEFT|NG_HIGHLABEL, NULL, (APTR)Gadget30Clicked,
  77.     34, 110, 83, 15, (UBYTE *)"_Format!", NULL, GD_Gadget40, PLACETEXT_IN, NULL, (APTR)Gadget40Clicked,
  78.     180, 110, 83, 15, (UBYTE *)"_Cancel", NULL, GD_Gadget50, PLACETEXT_IN, NULL, (APTR)Gadget50Clicked,
  79.     76, 6, 175, 12, (UBYTE *)"_Drive", NULL, GD_Gadget60, PLACETEXT_LEFT|NG_HIGHLABEL, NULL, (APTR)Gadget60Clicked,
  80.     176, 66, 88, 13, NULL, NULL, GD_Gadget70, 0, NULL, (APTR)Gadget70Clicked,
  81.     96, 87, 26, 11, (UBYTE *)"_Install  ", NULL, GD_Gadget80, PLACETEXT_LEFT|NG_HIGHLABEL, NULL, (APTR)Gadget80Clicked
  82. };
  83.  
  84. ULONG Project0GTags[] = {
  85.     (GTST_String), (ULONG)"Empty", (GTST_MaxChars), 20, (STRINGA_Justification), (GACT_STRINGCENTER), (GT_Underscore), '_', (TAG_DONE),
  86.     (GTCB_Checked), TRUE, (GT_Underscore), '_', (TAG_DONE),
  87.     (GTCB_Checked), TRUE, (GT_Underscore), '_', (GA_Disabled), TRUE, (TAG_DONE),
  88.     (GT_Underscore), '_', (TAG_DONE),
  89.     (GT_Underscore), '_', (TAG_DONE),
  90.     (GT_Underscore), '_', (TAG_DONE),
  91.     (GTST_String), (ULONG)"DF0:", (GTST_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (GT_Underscore), '_', (TAG_DONE),
  92.     (GTCY_Labels), (ULONG)&Gadget700Labels[ 0 ], (TAG_DONE),
  93.     (GT_Underscore), '_', (TAG_DONE)
  94. };
  95.  
  96. void main(void)
  97. {
  98.         SetupScreen();
  99.         OpenProject0Window();
  100.         HandleProject0IDCMP();
  101.         CloseProject0Window();
  102.         CloseDownScreen();
  103. }
  104.  
  105. int SetupScreen( void )
  106. {
  107.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  108.         return( 1L );
  109.  
  110.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  111.         return( 2L );
  112.  
  113.     return( 0L );
  114. }
  115.  
  116. void CloseDownScreen( void )
  117. {
  118.     if ( VisualInfo ) {
  119.         FreeVisualInfo( VisualInfo );
  120.         VisualInfo = NULL;
  121.     }
  122.  
  123.     if ( Scr        ) {
  124.         UnlockPubScreen( NULL, Scr );
  125.         Scr = NULL;
  126.     }
  127. }
  128.  
  129. void Project0Render( void )
  130. {
  131.     UWORD        offx, offy;
  132.  
  133.     offx = Project0Wnd->BorderLeft;
  134.     offy = Project0Wnd->BorderTop;
  135.  
  136.  
  137.     DrawBevelBox( Project0Wnd->RPort, offx + 5, offy + 40, 138, 63, GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE );
  138.     DrawBevelBox( Project0Wnd->RPort, offx + 20, offy + 3, 244, 36, GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE );
  139.     DrawBevelBox( Project0Wnd->RPort, offx + 149, offy + 40, 154, 63, GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE );
  140.     PrintIText( Project0Wnd->RPort, Project0IText, offx, offy );
  141. }
  142.  
  143. int HandleProject0IDCMP( void )
  144. {
  145.     struct IntuiMessage    *m;
  146.     struct Gadget        *func;
  147.     BOOL            running = TRUE;
  148.         int num;
  149.         ActivateGadget(Project0Gadgets[6],Project0Wnd,NULL);
  150.         while (running)
  151.         {
  152.                 while((running)&&(m = GT_GetIMsg( Project0Wnd->UserPort ))) {
  153.  
  154.         GT_ReplyIMsg( m );
  155.  
  156.         switch ( m->Class ) {
  157.  
  158.             case    IDCMP_REFRESHWINDOW:
  159.                 GT_BeginRefresh( Project0Wnd );
  160.                 Project0Render();
  161.                 GT_EndRefresh( Project0Wnd, TRUE );
  162.                 break;
  163.  
  164.             case    IDCMP_CLOSEWINDOW:
  165.                 running = FALSE;
  166.                 break;
  167.  
  168.             case    IDCMP_GADGETUP:
  169.                 func = ( struct Gadget * )m->IAddress;
  170.                                 num=func->GadgetID;
  171.                                 switch(num)
  172.                                 {
  173.                                         case 6:
  174.                                            strcpy(drive,((struct StringInfo *)func->SpecialInfo)->Buffer);
  175.                                            ActivateGadget(Project0Gadgets[0],Project0Wnd,NULL);
  176.                                            break;
  177.                                         case 0:
  178.                                            strcpy(name,((struct StringInfo *)func->SpecialInfo)->Buffer);
  179.                                            if (!strcmp(name,""))
  180.                                            {
  181.                                                 DisplayBeep(Scr);
  182.                                                 ActivateGadget(Project0Gadgets[0],Project0Wnd,NULL);
  183.                                            }
  184.                                            break;
  185.                                         case 1:
  186.                                         case 2:
  187.                                         case 3:
  188.                                         case 8:
  189.                                            checked(num);
  190.                                            break;
  191.                                         case 7:
  192.                                            count=(count+1)%4;
  193.                                            break;
  194.                                         case 4:
  195.                                            form();
  196.                                            break;
  197.                                         case 5:
  198.                                            running=FALSE;
  199.                                            break;
  200.                                 }
  201.                                 break;
  202.         }
  203.     }
  204.     }
  205. }
  206.  
  207. int OpenProject0Window( void )
  208. {
  209.     struct NewGadget    ng;
  210.     struct Gadget    *g;
  211.     UWORD        lc, tc;
  212.     UWORD        offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  213.  
  214.     if ( ! ( g = CreateContext( &Project0GList )))
  215.         return( 1L );
  216.  
  217.     for( lc = 0, tc = 0; lc < Project0_CNT; lc++ ) {
  218.  
  219.         CopyMem((char * )&Project0NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  220.  
  221.         ng.ng_VisualInfo = VisualInfo;
  222.         ng.ng_TextAttr   = &topaz8;
  223.         ng.ng_LeftEdge  += offx;
  224.         ng.ng_TopEdge   += offy;
  225.  
  226.         Project0Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project0GTypes[ lc ], g, &ng, ( struct TagItem * )&Project0GTags[ tc ] );
  227.  
  228.         while( Project0GTags[ tc ] ) tc += 2;
  229.         tc++;
  230.  
  231.         if ( NOT g )
  232.             return( 2L );
  233.     }
  234.  
  235.     if ( ! ( Project0Wnd = OpenWindowTags( NULL,
  236.                 WA_Left,    Project0Left,
  237.                 WA_Top,        Project0Top,
  238.                 WA_Width,    Project0Width,
  239.                 WA_Height,    Project0Height + offy,
  240.                 WA_IDCMP,    STRINGIDCMP|CHECKBOXIDCMP|BUTTONIDCMP|CYCLEIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY,
  241.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  242.                 WA_Gadgets,    Project0GList,
  243.                 WA_Title,    Project0Wdt,
  244.                 WA_ScreenTitle,    "Quick Format V2.3 ©1994 By Mirko Zappitelli",
  245.                 WA_PubScreen,    Scr,
  246.                 WA_AutoAdjust,    TRUE,
  247.                 TAG_DONE )))
  248.     return( 4L );
  249.  
  250.     GT_RefreshWindow( Project0Wnd, NULL );
  251.  
  252.     Project0Render();
  253.  
  254.     return( 0L );
  255. }
  256.  
  257. void CloseProject0Window( void )
  258. {
  259.     if ( Project0Wnd        ) {
  260.         CloseWindow( Project0Wnd );
  261.         Project0Wnd = NULL;
  262.     }
  263.  
  264.     if ( Project0GList      ) {
  265.         FreeGadgets( Project0GList );
  266.         Project0GList = NULL;
  267.     }
  268. }
  269.  
  270. void checked(int num)
  271. {
  272.         BOOL verify;
  273.         status[num-1]=1-status[num-1];
  274.  
  275.         if (status[0]==0) strcpy(trashcan," NOICONS"); else strcpy(trashcan,"");
  276.  
  277.         //if (status[1]==1) verify=TRUE;else verify=FALSE;
  278.  
  279.         if (status[2]==1) strcpy(quick," QUICK"); else strcpy(quick,"");
  280.         
  281. }
  282. void form(void)
  283. {
  284.         struct Window *win;
  285.         int err,a;
  286.         char buf[120],directories[30],*dir[13]={ "S","L","C","Devs","Libs","System","Utilities","Fonts","Prefs","Prefs/Env-Archive","Devs/Printers","Devs/Keymaps","Prefs/Env-Archive/Sys" };
  287.         char copy[30];
  288.         
  289.         sprintf(stringa,"SYS:System/Format >NIL: drive %s name %s %s %s %s",drive,name,trashcan,quick,cycle[count]);
  290.         win=OpenWindowTags(NULL,
  291.                       WA_Width,500,
  292.                       WA_Height,100,
  293.                       WA_Top,90,
  294.                       WA_Left,80,
  295.                       WA_DragBar,TRUE,
  296.                       WA_Activate,TRUE,
  297.                       WA_DepthGadget,TRUE,
  298.                       WA_PubScreen,Scr,
  299.                       TAG_DONE);
  300.         SetAPen(win->RPort,1);
  301.         Move(win->RPort,win->BorderLeft+16,win->BorderTop+8);
  302.         Text(win->RPort,"Formatting disk...",18);
  303.         Move(win->RPort,win->BorderLeft+170,win->BorderTop+8);
  304.         system(stringa);
  305.         err=IoErr();
  306.         if (err)
  307.         {
  308.                 DisplayBeep(Scr);
  309.                 Move(win->RPort,win->BorderLeft+16,win->BorderTop+16);
  310.                 Fault(err,"ERRORE",buf,120);
  311.                 Text(win->RPort,buf,strlen(buf));
  312.                 goto fine;
  313.         }
  314.         else Text(win->RPort,"OK",2);
  315.         if (status[7]==1) 
  316.         {
  317.                 Move(win->RPort,win->BorderLeft+16,win->BorderTop+24);
  318.                 Text(win->RPort,"Installing disk...",18);
  319.                 sprintf(copy,"C:Install >NIL: %s",drive);
  320.                 system(copy);
  321.                 Move(win->RPort,win->BorderLeft+170,win->BorderTop+24);
  322.                 Text(win->RPort,"OK",2);
  323.                 Move(win->RPort,win->BorderLeft+16,win->BorderTop+32);
  324.                 Text(win->RPort,"Making Directories...",21);
  325.                 for (a=0;a<13;a++)
  326.                 {
  327.                         strcpy(directories,"");
  328.                         sprintf(directories,"makedir %s%s",drive,dir[a]);
  329.                         system(directories);
  330.                 }
  331.                 Move(win->RPort,win->BorderLeft+188,win->BorderTop+32);
  332.                 Text(win->RPort,"OK",2);
  333.                 Move(win->RPort,win->BorderLeft+16,win->BorderTop+40);
  334.                 Text(win->RPort,"Copying files...",16);
  335.                 copystartup(drive);
  336.                 copyc(drive);
  337.                 copyl(drive);
  338.                 copylibs(drive);
  339.                 copyprefs(drive);
  340.                 Move(win->RPort,win->BorderLeft+170,win->BorderTop+40);
  341.                 Text(win->RPort,"Done.",5);
  342.         }
  343.         fine:
  344.          Delay(200);
  345.          CloseWindow(win);
  346. }       
  347.  
  348. void copystartup(char *drive)
  349. {
  350.         char copia[57];
  351.         sprintf(copia,"C:copy >NIL: SYS:S/QFormat.confg %sS/startup-sequence",drive);
  352.         system(copia);
  353.         strcpy(copia,"");
  354.         sprintf(copia,"C:copy >NIL: SYS:S/shell-startup %sS",drive);
  355.         system(copia);
  356. }
  357.  
  358. void copyc(char *drive)
  359. {
  360.         char copie[50];
  361.         sprintf(copie,"C:copy >NIL: SYS:C/dir %sC",drive);
  362.         system(copie);
  363.         strcpy(copie,"");
  364.         sprintf(copie,"C:copy >NIL: SYS:C/list %sC",drive);
  365.         system(copie);
  366.         strcpy(copie,"");
  367.         sprintf(copie,"C:copy >NIL: SYS:C/delete %sC",drive);
  368.         system(copie);
  369.         strcpy(copie,"");
  370.         sprintf(copie,"C:copy >NIL: SYS:C/copy %sC",drive);
  371.         system(copie);
  372.         strcpy(copie,"");
  373.         sprintf(copie,"C:copy >NIL: SYS:C/IPrefs %sC",drive);
  374.         system(copie);
  375.         strcpy(copie,"");
  376.         sprintf(copie,"C:copy >NIL: SYS:C/makedir %sC",drive);
  377.         system(copie);
  378.         strcpy(copie,"");
  379.         sprintf(copie,"C:copy >NIL: SYS:C/assign %sC",drive);
  380.         system(copie);
  381.         strcpy(copie,"");
  382.         sprintf(copie,"C:copy >NIL: SYS:C/SetPatch %sC",drive);
  383.         system(copie);
  384.         strcpy(copie,"");
  385.         sprintf(copie,"C:copy >NIL: SYS:C/Binddrivers %sC",drive);
  386.         system(copie);
  387.         strcpy(copie,"");
  388.         sprintf(copie,"C:copy >NIL: SYS:C/LoadWB %sC",drive);
  389.         system(copie);
  390. }
  391.         
  392. void copyl(char *drive)
  393. {
  394.         char copy[50];
  395.         sprintf(copy,"C:copy >NIL: SYS:L/port-handler %sL",drive);
  396.         system(copy);
  397. }
  398.  
  399. void copylibs(char *drive)
  400. {
  401.         char copia[50];
  402.         sprintf(copia,"C:copy >NIL: SYS:Libs/asl.library %sLibs",drive);
  403.         system(copia);
  404.         strcpy(copia,"");
  405.         sprintf(copia,"C:copy >NIL: SYS:Libs/version.library %sLibs",drive);
  406.         system(copia);
  407.         strcpy(copia,"");
  408.         sprintf(copia,"C:copy >NIL: SYS:Libs/diskfont.library %sLibs",drive);
  409.         system(copia);
  410.         strcpy(copia,"");
  411.         sprintf(copia,"C:copy >NIL: SYS:Libs/iffparse.library %sLibs",drive);
  412.         system(copia);
  413. }
  414.  
  415. int copyprefs(char *drive)
  416. {
  417.         char copie[80];
  418.         sprintf(copie,"C:copy >NIL: SYS:Prefs/env-archive/sys/wbconfig.prefs %sPrefs/env-archive/sys",drive);
  419.         system(copie);
  420.         strcpy(copie,"");
  421.         sprintf(copie,"C:copy >NIL: SYS:Prefs.info %s",drive);
  422.         system(copie);
  423.         strcpy(copie,"");
  424.         sprintf(copie,"C:copy >NIL: SYS:System.info %s",drive);
  425.         system(copie);
  426.         strcpy(copie,"");
  427.         sprintf(copie,"C:copy >NIL: SYS:Utilities.info %s",drive);
  428.         system(copie);
  429.         return (0);
  430. }
  431.